package com.luckcoder.relax.games.service;

import com.luckcoder.relax.games.domain.vo.MiniappGameVo;
import com.luckcoder.relax.games.domain.dto.GameFinishData;
import com.luckcoder.relax.games.domain.dto.UserGameStats;
import com.luckcoder.relax.games.domain.dto.GlobalGameStats;
import com.luckcoder.relax.games.domain.dto.EmojiRankingItem;

import java.util.List;

/**
 * 小程序游戏服务接口
 *
 * @author zhanghao
 * @date 2025-09-10
 */
public interface IMiniappGameService {
    
    /**
     * 获取可用的游戏列表
     * 
     * @return 游戏列表
     */
    List<MiniappGameVo> getAvailableGames();
    
    /**
     * 开始游戏，记录游戏开始信息
     * 
     * @param gameCode 游戏编码
     * @return 游戏记录ID
     */
    Long startGame(String gameCode);
    
    /**
     * 结束游戏并保存详细数据
     * 
     * @param recordId 游戏记录ID
     * @param gameFinishData 游戏结束数据
     */
    void finishGame(Long recordId, GameFinishData gameFinishData);
    
    /**
     * 获取用户游戏统计数据
     * 
     * @param gameCode 游戏编码
     * @return 用户游戏统计数据
     */
    UserGameStats getUserGameStats(String gameCode);
    
    /**
     * 获取全局游戏统计数据
     * 
     * @param gameCode 游戏编码
     * @return 全局游戏统计数据
     */
    GlobalGameStats getGlobalGameStats(String gameCode);
    
    /**
     * 获取Emoji消灭排行榜
     * 
     * @param gameCode 游戏编码
     * @param limit 返回数量限制
     * @return Emoji排行榜列表
     */
    List<EmojiRankingItem> getEmojiRanking(String gameCode, Integer limit);
}